import md5 from 'blueimp-md5'

/**
 * 将对象参数按ASCII码顺序排序
 * @param {Object} params - 需要排序的参数对象
 * @returns {string} 排序后的参数字符串
 */
export function sortParams(params) {
  return Object.keys(params)
    .filter(key => params[key] !== undefined && params[key] !== null && params[key] !== '')
    .sort()
    .map(key => {
      // const value = encodeURIComponent(params[key].toString());
      const value = params[key].toString();
      return `${key}=${value}`;
    })
    .join('&');
}

/**
 * 生成请求特征字符串
 * @param {Object} headers - 请求头对象
 * @param {Object} data - 请求参数对象
 * @returns {string} 拼接后的字符串
 */
export function generateSignature(headers, data, userId) {
  const mergedParams = {
    ...headers,
    ...(data || {})
  };
  const sortedStr = sortParams(mergedParams);
  console.log(sortedStr)
  if (userId !== undefined ) {
	  sortedStr = sortedStr + '&' + userId; 
  }
  return md5(sortedStr); // 生成32位小写MD5
}


// 新增带密钥的签名方法
export function generateSignatureWithSecret(headers, data, secret) {
  const baseStr = generateSignature(headers, data);
  console.log(sortedStr)
  return md5(baseStr + secret);
}